package cn.iocoder.yudao.module.biz.service.risk.riskInfo;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.biz.controller.admin.risk.riskInfo.vo.*;
import cn.iocoder.yudao.module.biz.controller.admin.risk.riskInfo.vo.BizRiskInfoCreateReqVO;
import cn.iocoder.yudao.module.biz.controller.admin.risk.riskInfo.vo.BizRiskInfoUpdateReqVO;
import cn.iocoder.yudao.module.biz.dal.dataobject.risk.riskInfo.BizRiskInfoDO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 风险数据 Service 接口
 *
 * @author 芋道源码
 */
public interface RiskInfoService {

    /**
     * 创建风险数据
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createInfo(@Valid BizRiskInfoCreateReqVO createReqVO);

    /**
     * 更新风险数据
     *
     * @param updateReqVO 更新信息
     */
    void updateInfo(@Valid BizRiskInfoUpdateReqVO updateReqVO);

    /**
     * 删除风险数据
     *
     * @param id 编号
     */
    void deleteInfo(String id);

    /**
     * 获得风险数据
     *
     * @param id 编号
     * @return 风险数据
     */
    BizRiskInfoDO getInfo(String id);

    /**
     * 获得风险数据列表
     *
     * @param ids 编号
     * @return 风险数据列表
     */
    List<BizRiskInfoDO> getInfoList(Collection<String> ids);

    /**
     * 获得风险数据分页
     *
     * @param pageReqVO 分页查询
     * @return 风险数据分页
     */
    PageResult<BizRiskInfoDO> getInfoPage(BizRiskInfoPageReqVO pageReqVO);

    /**
     * 获得风险数据列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 风险数据列表
     */
    List<BizRiskInfoDO> getInfoList(BizRiskInfoExportReqVO exportReqVO);

    /**
     * 获得风险数据分页
     *
     * @param pageReqVO 分页查询
     * @return 风险数据分页
     */
    List<BizRiskInfoRespVO> getRiskInfoPage(BizRiskInfoPageReqVO pageReqVO);

    /**
     * 获得风险数量
     * @param pageReqVO
     * @return
     */
    Integer getRiskInfoCount(BizRiskInfoPageReqVO pageReqVO);

    /**
     * 获得风险数据不分页
     *
     * @param pageReqVO 查询
     * @return 风险数据分页
     */
    List<BizRiskInfoExcelVO> getAllRiskInfo(BizRiskInfoExportReqVO pageReqVO);

    /**
     * 首页统计风险数量
     * @return
     */
    Long getRiskCount();

    /**
     * 首页风险环形图
     * @return
     */
    List<Map<String,Object>> getRiskPie();

    RiskImportRespVO importExcel(MultipartFile file);

    /**
     * 获得风险数据分页
     *
     * @param pageReqVO 分页查询
     * @return 风险数据分页
     */
    List<BizRiskInfoRespVO> getRiskInfoList(BizRiskInfoPageReqVO pageReqVO);

    /**
     * 获得风险数据不分页
     *
     * @param exportReqVO
     * @return 风险数据
     */
    List<BizRiskInfoExcelVO> exportRiskInfoExcel(BizRiskInfoExcelVO exportReqVO);
}
